<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Eigen-unsupported: Eigen::PolynomialSolver&lt; Scalar_, Deg_ &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="eigendoxy.css" rel="stylesheet" type="text/css">
<!--  -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="Eigen_Silly_Professor_64x64.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="http://eigen.tuxfamily.org">Eigen-unsupported</a>
   &#160;<span id="projectnumber">3.4.90 (git rev 67eeba6e720c5745abc77ae6c92ce0a44aa7b7ae)</span>
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.svg"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classEigen_1_1PolynomialSolver.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="classEigen_1_1PolynomialSolver-members.html">List of all members</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Eigen::PolynomialSolver&lt; Scalar_, Deg_ &gt; Class Template Reference<div class="ingroups"><a class="el" href="group__Polynomials__Module.html">Polynomials module</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Scalar_, int Deg_&gt;<br />
class Eigen::PolynomialSolver&lt; Scalar_, Deg_ &gt;</h3>

<p>A polynomial solver. </p>
<p>Computes the complex roots of a real polynomial.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Scalar_</td><td>the scalar type, i.e., the type of the polynomial coefficients </td></tr>
    <tr><td class="paramname">Deg_</td><td>the degree of the polynomial, can be a compile time value or Dynamic. Notice that the number of polynomial coefficients is Deg_+1.</td></tr>
  </table>
  </dd>
</dl>
<p>This class implements a polynomial solver and provides convenient methods such as</p><ul>
<li>real roots,</li>
<li>greatest, smallest complex roots,</li>
<li>real roots with greatest, smallest absolute real value.</li>
<li>greatest, smallest real roots.</li>
</ul>
<p>WARNING: this polynomial solver is experimental, part of the unsupported <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> modules.</p>
<p>Currently a QR algorithm is used to compute the eigenvalues of the companion matrix of the polynomial to compute its roots. This supposes that the complex moduli of the roots are all distinct: e.g. there should be no multiple roots or conjugate roots for instance. With 32bit (float) floating types this problem shows up frequently. However, almost always, correct accuracy is reached even in these cases for 64bit (double) floating types and small polynomial degree (&lt;20). </p>
</div><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for Eigen::PolynomialSolver&lt; Scalar_, Deg_ &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classEigen_1_1PolynomialSolver__inherit__graph.png" border="0" usemap="#aEigen_1_1PolynomialSolver_3_01Scalar___00_01Deg___01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="aEigen_1_1PolynomialSolver_3_01Scalar___00_01Deg___01_4_inherit__map" id="aEigen_1_1PolynomialSolver_3_01Scalar___00_01Deg___01_4_inherit__map">
<area shape="rect" title="A polynomial solver." alt="" coords="37,380,201,516"/>
<area shape="rect" href="classEigen_1_1PolynomialSolverBase.html" title="Defined to be inherited by polynomial solvers: it provides convenient methods such as." alt="" coords="5,5,233,332"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a93d305d8529be0de76019514eb87b086"><td class="memTemplParams" colspan="2">template&lt;typename OtherPolynomial &gt; </td></tr>
<tr class="memitem:a93d305d8529be0de76019514eb87b086"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolver.html#a93d305d8529be0de76019514eb87b086">compute</a> (const OtherPolynomial &amp;poly)</td></tr>
<tr class="separator:a93d305d8529be0de76019514eb87b086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classEigen_1_1PolynomialSolverBase"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classEigen_1_1PolynomialSolverBase')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classEigen_1_1PolynomialSolverBase.html">Eigen::PolynomialSolverBase&lt; Scalar_, Deg_ &gt;</a></td></tr>
<tr class="memitem:ade5cd822a659dc18f4e8b674d477bec0 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RealScalar &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#ade5cd822a659dc18f4e8b674d477bec0">absGreatestRealRoot</a> (bool &amp;hasArealRoot, const RealScalar &amp;absImaginaryThreshold=<a class="elRef" href="../structEigen_1_1NumTraits.html">NumTraits</a>&lt; Scalar &gt;::dummy_precision()) const</td></tr>
<tr class="separator:ade5cd822a659dc18f4e8b674d477bec0 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2438282277bbb62960c3ad1f286052b inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RealScalar &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#ad2438282277bbb62960c3ad1f286052b">absSmallestRealRoot</a> (bool &amp;hasArealRoot, const RealScalar &amp;absImaginaryThreshold=<a class="elRef" href="../structEigen_1_1NumTraits.html">NumTraits</a>&lt; Scalar &gt;::dummy_precision()) const</td></tr>
<tr class="separator:ad2438282277bbb62960c3ad1f286052b inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85d21a3516e60e6af12898b36e7a016f inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RealScalar &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#a85d21a3516e60e6af12898b36e7a016f">greatestRealRoot</a> (bool &amp;hasArealRoot, const RealScalar &amp;absImaginaryThreshold=<a class="elRef" href="../structEigen_1_1NumTraits.html">NumTraits</a>&lt; Scalar &gt;::dummy_precision()) const</td></tr>
<tr class="separator:a85d21a3516e60e6af12898b36e7a016f inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d8e134d014023b692b0cabea57b8d99 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RootType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#a6d8e134d014023b692b0cabea57b8d99">greatestRoot</a> () const</td></tr>
<tr class="separator:a6d8e134d014023b692b0cabea57b8d99 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dc272fb0a2139fd2b5454d1e947a7da inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memTemplParams" colspan="2">template&lt;typename Stl_back_insertion_sequence &gt; </td></tr>
<tr class="memitem:a8dc272fb0a2139fd2b5454d1e947a7da inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#a8dc272fb0a2139fd2b5454d1e947a7da">realRoots</a> (Stl_back_insertion_sequence &amp;bi_seq, const RealScalar &amp;absImaginaryThreshold=<a class="elRef" href="../structEigen_1_1NumTraits.html">NumTraits</a>&lt; Scalar &gt;::dummy_precision()) const</td></tr>
<tr class="separator:a8dc272fb0a2139fd2b5454d1e947a7da inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae315ff89bf2811db0b9378fdf9bdae11 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const <a class="elRef" href="../classEigen_1_1Matrix.html">RootsType</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#ae315ff89bf2811db0b9378fdf9bdae11">roots</a> () const</td></tr>
<tr class="separator:ae315ff89bf2811db0b9378fdf9bdae11 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abacd1d52145ce7bdc6f070380eac3b2d inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RealScalar &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#abacd1d52145ce7bdc6f070380eac3b2d">smallestRealRoot</a> (bool &amp;hasArealRoot, const RealScalar &amp;absImaginaryThreshold=<a class="elRef" href="../structEigen_1_1NumTraits.html">NumTraits</a>&lt; Scalar &gt;::dummy_precision()) const</td></tr>
<tr class="separator:abacd1d52145ce7bdc6f070380eac3b2d inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7512d659658ff8b70f333768f9e4bdf6 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memItemLeft" align="right" valign="top">const RootType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1PolynomialSolverBase.html#a7512d659658ff8b70f333768f9e4bdf6">smallestRoot</a> () const</td></tr>
<tr class="separator:a7512d659658ff8b70f333768f9e4bdf6 inherit pub_methods_classEigen_1_1PolynomialSolverBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a93d305d8529be0de76019514eb87b086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d305d8529be0de76019514eb87b086">&#9670;&nbsp;</a></span>compute()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int Deg_&gt; </div>
<div class="memtemplate">
template&lt;typename OtherPolynomial &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1PolynomialSolver.html">Eigen::PolynomialSolver</a>&lt; Scalar_, Deg_ &gt;::compute </td>
          <td>(</td>
          <td class="paramtype">const OtherPolynomial &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Computes the complex roots of a new polynomial. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="PolynomialSolver_8h_source.html">PolynomialSolver.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceEigen.html">Eigen</a></li><li class="navelem"><a class="el" href="classEigen_1_1PolynomialSolver.html">PolynomialSolver</a></li>
    <li class="footer">Generated on Thu Apr 21 2022 13:08:00 for Eigen-unsupported by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
